// ==========================================================================
// GFast自动生成dao internal操作代码。
// 生成日期：2024-04-24 18:08:26
// 生成路径: internal/app/business/dao/internal/books.go
// 生成人：周志雄
// desc:场次座位预定
// company:云南奇讯科技有限公司
// ==========================================================================


package internal


import (
    "context"
    "github.com/gogf/gf/v2/database/gdb"
    "github.com/gogf/gf/v2/frame/g"
)


// BooksDao is the manager for logic model data accessing and custom defined data operations functions management.
type BooksDao struct {
    table   string         // Table is the underlying table name of the DAO.
    group   string         // Group is the database configuration group name of current DAO.
    columns BooksColumns // Columns is the short type for Columns, which contains all the column names of Table for convenient usage.
}


// BooksColumns defines and stores column names for table books.
type BooksColumns struct {    
    Id  string  // 主键ID    
    ShowingId  string  // 场次ID    
    SeatId  string  // 座位ID    
    Status  string  // 预订状态（1已选、2未选、3已预留）    
    OrderId  string  // 订单号    
    CreatedAt  string  // 创建时间    
    UpdatedAt  string  // 更新时间    
}


var booksColumns = BooksColumns{    
    Id:  "id",    
    ShowingId:  "showing_id",    
    SeatId:  "seat_id",    
    Status:  "status",    
    OrderId:  "order_id",    
    CreatedAt:  "created_at",    
    UpdatedAt:  "updated_at",    
}


// NewBooksDao creates and returns a new DAO object for table data access.
func NewBooksDao() *BooksDao {
	return &BooksDao{
        group:    "default",
        table: "books",
        columns:booksColumns,
	}
}


// DB retrieves and returns the underlying raw database management object of current DAO.
func (dao *BooksDao) DB() gdb.DB {
	return g.DB(dao.group)
}


// Table returns the table name of current dao.
func (dao *BooksDao) Table() string {
	return dao.table
}


// Columns returns all column names of current dao.
func (dao *BooksDao) Columns() BooksColumns {
	return dao.columns
}


// Group returns the configuration group name of database of current dao.
func (dao *BooksDao) Group() string {
	return dao.group
}


// Ctx creates and returns the Model for current DAO, It automatically sets the context for current operation.
func (dao *BooksDao) Ctx(ctx context.Context) *gdb.Model {
	return dao.DB().Model(dao.table).Safe().Ctx(ctx)
}


// Transaction wraps the transaction logic using function f.
// It rollbacks the transaction and returns the error from function f if it returns non-nil error.
// It commits the transaction and returns nil if function f returns nil.
//
// Note that, you should not Commit or Rollback the transaction in function f
// as it is automatically handled by this function.
func (dao *BooksDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) {
	return dao.Ctx(ctx).Transaction(ctx, f)
}